#include <iostream>
#include <fstream>
#include <time.h>
#include <string>
#include <sys/time.h>
#include "Secuenciacion.h"

using namespace std;

double diff(struct timeval *a, struct timeval *b)
{
  return
    (double)(a->tv_sec + (double)a->tv_usec/1000000) -
    (double)(b->tv_sec + (double)b->tv_usec/1000000);
}

int main(){
   Secuenciacion sec;
   int opcion;
   string namefich;
   struct timeval ts1,ts2;
   double secs;
   


   do{
      cout<<"**************** SECUENCIACION DE TAREAS ****************"<<endl;
      cout<<"|      1) Leer fichero  \t\t\t\t|"<<endl;
      cout<<"|      2) Heuristica de menor limite \t\t\t|"<<endl;
      cout<<"|      3) Heuristica de menor duracion \t\t\t|" <<endl;
      cout<<"|      4) Heuristica de menor penalizacion\t\t|"<<endl;
      cout<<"|      5) Muestra las tareas\t\t\t\t|"<<endl;
      cout<<"|      0) Salir \t\t\t\t\t|"<<endl;
      cout<<"*********************************************************"<<endl;
      cin>>opcion;
   
      switch(opcion){
         case 1: cout<<"Nombre del fichero...";
                 cin>>namefich;
                 cout<<endl;
                 sec.lectura_fich(namefich);
                 break;
         case 2: gettimeofday(&ts1,NULL);
                 sec.heuristica(MENOR_LIMITE);
                 gettimeofday(&ts2,NULL);
                 secs = diff(&ts2,&ts1);
                 cout<<"TIEMPO: "<<secs<<endl<<endl;
                 break;
         case 3: gettimeofday(&ts1,NULL);
                 sec.heuristica(MENOR_DURACION);
                 gettimeofday(&ts2,NULL);
                 secs = diff(&ts2,&ts1);
                 cout<<"TIEMPO: "<<secs<<endl<<endl;
                 break;
         case 4: gettimeofday(&ts1,NULL);
                 sec.heuristica(MENOR_PENALIZACION);
                 gettimeofday(&ts2,NULL);
                 secs = diff(&ts2,&ts1);
                 cout<<"TIEMPO: "<<secs<<endl<<endl;
                 break;
         case 5: sec.muestra_tareas();
                 break;
      }

      sec.muestra_tareas();
   } while (opcion != 0);
}
